package 每日一题;

import java.util.ArrayList;

/**
 * 2216. 美化数组的最少删除数
 * 提示
 * 中等
 * 90
 * 相关企业
 * 给你一个下标从 0 开始的整数数组 nums ，如果满足下述条件，则认为数组 nums 是一个 美丽数组 ：
 *
 * nums.length 为偶数
 * 对所有满足 i % 2 == 0 的下标 i ，nums[i] != nums[i + 1] 均成立
 * 注意，空数组同样认为是美丽数组。
 *
 * 你可以从 nums 中删除任意数量的元素。当你删除一个元素时，被删除元素右侧的所有元素将会向左移动一个单位以填补空缺，而左侧的元素将会保持 不变 。
 *
 * 返回使 nums 变为美丽数组所需删除的 最少 元素数目。
 *
 *
 *
 * 示例 1：
 *
 * 输入：nums = [1,1,2,3,5]
 * 输出：1
 * 解释：可以删除 nums[0] 或 nums[1] ，这样得到的 nums = [1,2,3,5] 是一个美丽数组。可以证明，要想使 nums 变为美丽数组，至少需要删除 1 个元素。
 * 示例 2：
 *
 * 输入：nums = [1,1,2,2,3,3]
 * 输出：2
 * 解释：可以删除 nums[0] 和 nums[5] ，这样得到的 nums = [1,2,2,3] 是一个美丽数组。可以证明，要想使 nums 变为美丽数组，至少需要删除 2 个元素。
 *
 *
 * 提示：
 *
 * 1 <= nums.length <= 105
 * 0 <= nums[i] <= 105
 */
public class T2216_美化数组的最小删除数 {

    //使用两个变量存储 第i 和i+1个元素  若相等 删除第i+1个元素 获取下一个元素进行匹配为一对
    //优化 可以不用list存储 直接计数就可以
    //优化2  int b 是不需要的只要判断下一个数和a不一致即可
    public int minDeletion(int[] nums) {

        ArrayList<Integer> list = new ArrayList<>();

        int a = -1;
        int b = -1;
        int count = 0;

        for (int num : nums) {

            if (count==0){

                a = num;
                count++;

            }else if (count==1){

                if (a==num) {

                }else {
                    b=num;
                    count++;
                }


            }

            if (count==2){
                list.add(a);
                list.add(b);
                count = 0;
            }

        }

      return nums.length - list.size();

    }

}
